dApp 实用开发存储指南之 Gist | Web3.0 dApp 开发(十)
对于区块链 dApp 开发而言,「存储」是个重要的话题。我们究竟该将数据置于何处?从本篇开始,我们将就 dApp 中的存储问题进行一系列的探讨,大致会包括如下几种不同的存储方式:
链上变量、IPFS、Arweave、Gist 和传统后端存储。
第一篇会先谈论 Gist
。
0x01 关于数据的关键概念辨析
数据所有权:数据所有权归平台 / 数据所有权归用户 / 无主数据
数据存储方式:用户本地数据 / 服务器数据库数据 / 分布式存储数据 / 区块链存储数据
数据生命周期:临时数据 / 长期数据 / 超长期数据(100 年+)
数据和应用的关系:数据和单一应用一体 / 数据和多个应用一体 / 数据和应用完全解耦
数据开放状态:私有化 / 读开放 / 写开放 / 读写开放
数据存储成本:无成本 / 低成本 / 高成本
数据和智能合约的关系:智能合约可直接操作数据 / 智能合约不可直接操作数据
关于数据,Web3 dApp 的关键要义之一就是数据和应用的解耦。我们可以为 uniswap 开发多个 dApp,而微信只能有一个官方开发的 App。
但是,解耦就一定意味着数据要存储在去中心化网络上吗?
0x02 数据开放与数据不可篡改
「数据开放」和「数据不可篡改」是数据的两个特性。有的时候对这两个特性都需要,这个时候我们会将数据存放于区块链网络——无论是存储型链(IPFS、Arweave 等)还是非存储型链(Ethereum 等)。
但是,如果我们需要的只是「数据开放」这个特性,那末我们没必要为去中心化而去中心化,而是可以使用免费的「数据托管平台」,例如 Gist。
一个用 Gist 做数据托管的例子:
https://gist.github.com/leeduckgo/220087607d69490980ba59c235b86f59
在有需要时,我们也可以很容易地让 Gist 数据固化到链上,如下是一个 Gist 数据在 IPFS 上进行「快照」的例子:
0x03 Gist-based App
在 Gist 数据的基础上,我们可以很轻易地构建无数据库的 Web App,而无需自己的服务器。例如一个个人博客。
+-----------+ +--------------------------------+
| Gist Data |---------| Blog built by User himself! |
+-----------+ +--------------------------------+
而一个真正富有「让用户数据回归自身」的 Web3 精神的 Web3 App,允许用户将自己的数据导出到 Gist 上,甚至提供相应的 Gist-based App 构建指南,是一种很好的做法。
+----------+
| Web3 App |
+----------+
↓ OuTPuT
+----------+ +--------------------------------------------------------------+
|Gist Data |---------| User play with his gist data, built any cool things he like! |
+----------+ +--------------------------------------------------------------+
同时,我们也不必担忧 Gist 的可用性问题。因为区块链网络的存储可以作为我们的「数据备份」:
+----------+ +--------------------------------------------------------------+
|Gist Data |-------+--| User play with his gist data, built any cool things he like! |
+----------+ | +--------------------------------------------------------------+
| Snapshot |
+----------+ |
| IPFS/AR |-------+ Link to IPFS or Arweave Data if sth wrong with GIST.
+----------+
0x04 Gist-based Code
除了将数据托管在 Gist 平台上,我们也可以将代码片段托管到 Gist 平台上,这种片段我们可以称之为Snippets
。
事实上,我们认为智能合约
和 FaaS 中的 功能(Functions)
,均可以视为 Snippet,将其存储在 Gist 中。
Snippets from Gist/Arweave/IPFS
↓
+-----------------------+
| Runtime Code Loader |
+-------------+---------+
| FaaS 底座 | 组件集 |
+---0---------+---------
往期回顾:
Vercel 极速入门 | Web3.0 dApp 开发(八)
Token 自动售卖机 | Web3.0 dApp 开发(七)
SVG NFT 全面实践 | Web3.0 dApp 开发(六)
Scaffold-eth 快速上手 | Web3.0 dApp 开发(二)
eth.build 快速上手 | Web3.0 dApp 开发(一)